package algo3.g203.vista.armas;

import fiuba.algo3.titiritero.dibujables.SuperficiePanel;
import fiuba.algo3.titiritero.modelo.ObjetoDibujable;
import fiuba.algo3.titiritero.modelo.ObjetoPosicionable;
import fiuba.algo3.titiritero.modelo.SuperficieDeDibujo;

import javax.imageio.ImageIO;

import algo3.g203.modelo.armas.Arma;
import algo3.g203.modelo.armas.explosiones.Fragmento;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class VistaArma implements ObjetoDibujable {

	private final int DURACION_FRAMES_EXPLOSION = 3;
	
	private BufferedImage imagenArmaSinEstallar;
    private BufferedImage imagenArmaEstallando;
    private ObjetoPosicionable posicionable;
    private int contadorFrames;
    
    public VistaArma(ObjetoPosicionable posicionable, String srcImagenArmaSinEstallar, String srcImagenArmaEstallando){
    	this.posicionable = posicionable;
    	this.contadorFrames = 0;
	
    	try {
			this.imagenArmaSinEstallar = ImageIO.read(new File(srcImagenArmaSinEstallar));
			this.imagenArmaEstallando  = ImageIO.read(new File(srcImagenArmaEstallando));
		} catch (IOException e) {
			System.out.println("IMAGEN DE ARMA O EXPLOSION NO ENCONTRADA");
			e.printStackTrace();
		}
		
    }
    
	@Override
	public void dibujar(SuperficieDeDibujo superficieDeDibujo) {
		Graphics grafico = ((SuperficiePanel)superficieDeDibujo).getBuffer();
		
		Arma arma = (Arma) posicionable;
		
		if (!arma.yaExploto())
			grafico.drawImage(imagenArmaSinEstallar, posicionable.getX(), posicionable.getY(), null);
		
		if (arma.yaExploto() && contadorFrames < this.DURACION_FRAMES_EXPLOSION) {
			for (Fragmento f : arma.performExplosion())
				grafico.drawImage(imagenArmaEstallando, f.getX(), f.getY(), null);
			this.contadorFrames++;
		}
				
	}
	
	public ObjetoPosicionable getPosicionable() {
		return posicionable;
	}
	
}